/**
 * 定义一个类，用于创建Vue实例
 */
class Vue {
    constructor(options = {}) {
        // 给vue实例增加属性
        // options = options || {}
        this.$el = options.el;
        this.$data = options.data;
        this.$methods = options.methods;


        //监视data中的数据
        new Observe(this.$data);


        this.proxy(this.$data);
        this.proxy(this.$methods);
        //如果指定了el参数,对el进行解析
        if(this.$el) {
            //compile 负责模板解析的内容
            new Compile()
            //需要模板，需要数据
          new Compile(this.$el,this)
          
        }
    }
    proxy(data) {
        Object.keys(data).forEach(key=>{
            Object.defineProperty(this,key,{
                enumerable:true,
                configurable:true,
                get(){
                    return data[key]
                },
                set(newValue){
                    if(data[key] === newValue){return}
                    data[key] =  newValue
                }
            })
        })
    }
}

